The present invention relates to methods and apparatus for processing data, and more particularly, to methods and apparatus for processing data representing a time history.
Music programs that are produced from audio sources (especially digital sources, such as CDs and computer files) generally include a series of selections that are played in sequence without a break. As a consequence, it is desirable to make the transition from one selection to the next to be as smooth as possible so as not to draw the attention of those who are listening or dancing to the music.
Those music mixers who can accomplish such unnoticed transitions are in great demand because it requires a great deal of practice and technique. An important aspect of this talent is that the mixers can, in some way, match the beat of a first selection with the beat of the next selection,
It is, therefore, desirable to have a method to process the data in a series of time histories so as to automate this process as well as possible. This is particularly desirable where the source of the time histories is a digital source of recorded music.
According to one aspect, the invention is a method for processing data representing a time history of a sonic waveform to create a plot of the energy contained in the sonic waveform as a function of time. The method includes the steps of: a) establishing a window that contains a portion of the time history of the sonic waveform, b) transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, c) determining phase and frequency vectors for each frequency band, d) combining the phase and frequency vectors to produce an energy vector for each frequency band and e) summing the energy vectors to create a single energy level for the window. The method also includes the steps of f) repeating steps a)-e) for different windows to completely cover the time history, and g) displaying the energy levels as a function of time.
According to another aspect, the invention is a method for processing data representing a time history of a sonic waveform to identify the largest transients contained in the sonic waveform as a function of time. The method includes the steps of a) establishing a window that contains a portion of the time history of the sonic waveform, b) transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, c) determining phase and frequency vectors for each frequency band, d) combining the phase and frequency vectors to produce an energy vector for each frequency band, and e) summing the energy vectors to create a single energy level for the window. The method also includes the steps of f) repeating steps a)-e) for different windows to completely cover the time history, g) displaying the energy levels as a function of time, and h) processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value.
According to a still another aspect, the invention is a method for processing data representing a time history of a sonic waveform to identify a tempo contained in the sonic waveform as a function of time The method includes the steps of a) establishing a window that contains a portion of the time history of the sonic waveform, b) transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, c) determining phase and frequency vectors for each frequency band, d) combining the phase and frequency vectors Lo produce an energy vector for each frequency band, and e) summing the energy vectors to create a single energy level for the window. The method further includes the steps of f) repeating steps a)-e) for different windows to completely cover the time history, g) displaying the energy levels as a function of time, h) processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value, and i) performing steps a)-h) until a predetermined number of transients has been identified, The method further includes the steps of j) ordering the transients as a function of their times of occurrence, k) comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array; and 1) identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo.
According for yet another aspect, the invention is a method for processing data representing a time history of a sonic waveform to detect aliasing in the data. The method includes the steps of a) establishing a window that contains a portion of the time history of the sonic waveform, b) transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, c) determining phase and frequency vectors for each frequency band, d) combining the phase and frequency vectors to produce an energy vector for each frequency band, and e) summing the energy vectors to create a single energy level for the window. The inventive method also includes the steps of f) repeating steps a)-e) for different windows to completely cover the time history, g) displaying the energy levels as a function of time, and h) processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value. The method further includes the steps of i) performing steps a)-h) until a predetermined number of transients has been identified, j) ordering the transients as a function of their times of occurrence, k) comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array, 1) identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo, m) establishing a plurality of bins having predetermined sizes and predetermined spacings, and n) analyzing the identified portions in accordance with the bins to determine whether the identified tempo is in error.
According the a still further aspect the invention is a method for processing data representing a time history of a sonic waveform to a beat map for the sonic waveform as a function of time. The method includes the steps of a) establishing a window that contains a portion of the time history of the sonic waveform, b) transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, c) determining phase and frequency vectors for each frequency band, d) combining the phase and frequency vectors 1o produce an energy vector for each frequency band, and e) summing the energy vectors to create a single energy level for the window. The method also includes the steps of f) repeating steps a)-e) for different windows to completely cover the time history, g) displaying the energy levels as a function of time, h) processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value, and i) performing steps a)-h) until a predetermined number of transients has been identified. The method further includes the steps of j) ordering the transients as a function of their times of occurrence, k) comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array, 1) identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo, and m) creating a list of pulses that Correspond to actual beat positions. The method further includes the steps of n) determining the number of pulses on the list of pulses that pass through a mask having openings spaced in accordance with the tempo, o) comparing the number of pulses to a predetermined threshold and marking as valid the pulses that pass through the mask, and p) interpolating pulses at beat intervals between the valid pulses and producing an array of beat positions therefrom.
According to yet another aspect, the invention is an apparatus for processing data representing a time history of a sonic waveform to create a plot of the energy contained in the sonic waveform as a function of time, comprising means for establishing a window that contains a portion of the time history of the sonic waveform, means for transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, means for determining phase and frequency vectors for each frequency band, means for combining the phase and frequency vectors to produce an energy vector for each frequency band, and means for summing the energy vectors to create a single energy level for the window. The apparatus further includes means for providing the means above with data filtered through different windows to completely cover the time history, and means for displaying the energy levels as a function of time,
According to still another aspect, the invention is an apparatus for processing data representing a time history of a sonic waveform to identify the largest transients contained in the sonic waveform as a function of time. The apparatus includes means for establishing a window that contains a portion of the time history of the sonic waveform, means for transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, means for determining phase and frequency vectors for each frequency band, means for combining the phase and frequency vectors to produce an energy vector for each frequency band, and means for summing the energy vectors to create a single energy level for the window. The apparatus also includes means for providing the means above with data filtered through different windows to completely cover the time history, means for displaying the energy levels as a function of time, and means for processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value.
According to a still further aspect, the invention is an apparatus for processing data representing a time history of a sonic waveform to identify a tempo contained in the sonic waveform as a function of time. The apparatus includes means for establishing a window that contains a portion of the time history of the sonic waveform, means for transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, means for determining phase and frequency vectors for each frequency band, means for combining the phase and frequency vectors to produce an energy vector for each frequency band, and means for summing the energy vectors to create a single energy level for the window. The apparatus also includes means for providing the means above with data filtered through different windows to completely cover the time history, means for displaying the energy levels as a function of time, and means for processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value. Further, the apparatus includes means for providing the means above with data until a predetermined number of transients has been identified, means for ordering the transients as a function of their times of occurrence, means for comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array and means for identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo.
According to another aspect, the invention is an apparatus for processing data representing a time history of a sonic waveform to detect aliasing in the data, The apparatus includes means for establishing a window that contains a portion of the time history of the sonic waveform, means for transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, means, for determining phase and frequency vectors for each frequency band, means for combining the phase and frequency vectors to produce an energy vector for each frequency band, and means for summing the energy vectors to create a single energy level for the window. The apparatus also includes means for providing the means above with data filtered through different windows to completely cover the time history, means for displaying the energy levels as El function of time, and means for processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value. The apparatus also includes means for providing the means above with data until a predetermined number of transients has been identified, means for ordering the transients as a function of their times of occurrence, means for comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array, means for identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo, means for establishing a plurality of bins having predetermined sizes and predetermined spacings, and means for analyzing the identified portions in accordance with the bins to determine whether the identified tempo is in error
According to still another aspect, the invention is an apparatus for processing data representing a time history of a sonic waveform to a beat map for the sonic waveform as a function of time. The apparatus includes means for establishing a window that contains a portion of the time history of the sonic waveform, means for transforming the portion of the time history of the sonic waveform to a frequency domain, the frequency domain being divided into two or more frequency bands, means for determining phase and frequency vectors for each frequency band, means for combining the phase and frequency vectors to produce an energy vector for each frecqency band, and means for summing the energy vectors to create a single energy level for the window. The apparatus also includes means for providing the means above with data filtered through different windows to completely cover the time history, and means for displaying the energy levels as a function of time. The apparatus further includes means for processing the energy levels to identify all portions of the displayed energy levels whose slopes exceed a predetermined value, means for providing the means above with data until a predetermined number of transients has been identified, means for ordering the transients as a function of their times of occurrence, means for comparing the ordered transients to each of a plurality of candidate tempos having an array of uniformly spaced pulses by establishing a small time interval around each of the pulses and determining the maximum number of pulses that appear within the time intervals as the array is varied in phase relative to the array, and means for identifying as the tempo that tempo that produces the largest maximum number of pulses that appear within the time intervals corresponding to that tempo. The apparatus still further includes means for creating a list of pulses that correspond to actual beat positions, means for determining the number of pulses on the list of pulses that pass through a mask having openings spaced in accordance with the tempo, means for comparing the number of pulses to a predetermined threshold and marking as valid the pulses that pass through the mask, and means for interpolating pulses at beat intervals between the valid pulses and producing an array of beat positions therefrom.